import getLastEvent from '../utils/getLastEvent'
import getSelector from '../utils/getSelector'
export function injectJsError() {
  // 监听全局未捕获的错误
  window.addEventListener('error', function(event) {
    let lastEvent = getLastEvent() // 最后一个交互事件
    console.log(lastEvent);
    let log = {
      kind: 'stability', // 监控指标的大类
      type: 'error', // 小类型，这是一个错误
      errorType: 'jsError', // js 执行错误
      url: '', // 访问哪个路径报错了
      message: event.message, // 报错信息
      fileName: event.filename, // 哪个文件报错
      position: `${event.lineno}:${event.colno}`, // 哪一行哪一列报的错
      stack: getLines(event.error.stack), // 错误信息堆栈
      selector: lastEvent ? getSelector(lastEvent.path || lastEvent.target) : '' // 代表最后一个操作的元素
    }
    console.log(log);
  })

  function getLines(stack) {
    if (!stack) return ''
    return stack.split('\n').slice(1).map(item => item.replace(/^\s+at\s+/g, '')).join('^')
  }
}